//-------------------------------------------------------------------------
// Copyright (c) 2000-2010 Ufinity. All Rights Reserved.
//
// This software is the confidential and proprietary information of
// Ufinity
//
// Original author: Administrator
//
//-------------------------------------------------------------------------
// UFINITY MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
// THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
// TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
// PARTICULAR PURPOSE, OR NON-INFRINGEMENT. UFINITY SHALL NOT BE
// LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
// MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
//
// THIS SOFTWARE IS NOT DESIGNED OR INTENDED FOR USE OR RESALE AS ON-LINE
// CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE
// PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT
// NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE
// SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE
// SOFTWARE COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE
// PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES"). UFINITY
// SPECIFICALLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR
// HIGH RISK ACTIVITIES.
//-------------------------------------------------------------------------
package com.password.safe.controller;

import java.util.ArrayList;
import java.util.List;

import com.password.safe.dto.Messages;
import com.password.safe.util.UpdatePasswordObservable;
import com.password.safe.util.UpdatePasswordObserver;
import com.password.safe.util.UserCache;


public class UpdatePasswordController implements UpdatePasswordObservable {
	private List<UpdatePasswordObserver> observers = new ArrayList<UpdatePasswordObserver>();
	
	public void prepareUpdate() {
		for (UpdatePasswordObserver o : observers) {
			o.prepareUpdate();
		}
	}
	
	public void updatePassword(String newPassword) {
		String username = UserCache.getUsername();
		UserCache.cacheUser(username, newPassword);
		notifySucess(null);
	}
	
	public void addObserver(UpdatePasswordObserver observer) {
		observers.add(observer);
	}

	public void deleteObserver(UpdatePasswordObserver observer) {
		observers.remove(observer);
	}

	public void notifySucess(Messages messages) {
		for (UpdatePasswordObserver o : observers) {
			o.updatePasswordSuccess(messages);
		}
		
	}

	public void notifyFailed(Messages messages) {
		for (UpdatePasswordObserver o : observers) {
			o.updatePasswordFailed(messages);
		}
	}
}
